About Cosense
Help
Log in
mrsekut-p
D
o
c
t
r
i
n
e
:
f
l
u
s
h
(
)
現
在
D
o
c
t
r
i
n
e
O
R
M
が
管
理
し
て
い
る
全
て
の
E
n
t
i
t
y
を
D
B
に
反
映
す
る
d
o
c
s
Related
Sort by
Related
Modified
Created
Last visited
Most linked
Page rank
Title
Links
Doctrine ORM
PHPの[ORM][Data Mapper]というパターンらしいデザインややこしいSQLの書き方と違い過ぎて、どう書いたらいいのか知るのが大変[DoctrineのMapping]
Doctrine: persist()
新しくinstantiateされたEntityを[Doctrine ORM]の管理対象に登録する既存のEntityの更新には不要[docs https://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-objects.html]`persist()`がなぜ必要か?一見すると、冗長に見える
DoctrineのEntity Manager
Entityを管理するobjectDBとEntityの仲介をするコード内では`$em`という名前で変数に入れられる事が多いhttps://www.doctrine-project.org/projects/doctrine-orm/en/2.9/reference/working-with-objects.html[SymfonyのRepository]
Doctrine ORM
DQL (doctrine)
from [Doctrine ORM][DoctrineのQuery]をより柔軟にした感じのやつSQLっぽい構文で書くFROMのtableの指定とかは、table名ではなく、Entityを指定する、のように普通のSQLとは異なった書き方をするhttps://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html
『Symfony2入門』
ORM
[/ Object-relational mapping]オブジェクト関係マッピング>#WIP[インピーダンス・ミスマッチ]の解消上手く言語化できないが、「SQLの代替手段としてのORM」という戦略自体がズレている気がする
Unit Of Work
object modelに変更があるたびにDBに反映するのではなく、いくつかの変更をまとめて、DBに反映する[transaction]よりも大きい単位でcommitする感じのやつ[transaction]もUnit Of Workの一つとも言えるUnit Of Workの中の最小が[transaction]みたいな感じか
Data Mapper
from [Data Source Architecture Pattern]domain objectとtableを1対1対応させないパターン両者を仲介するmapperを作る両者は互いに全く関知しない参考
Symfonyでまともなmodelingはできるのか?
[Symfony]は[Doctrine ORM]を併用するEntityが[ドメインモデル貧血症]になるgetterとsetterの列挙[EntityとTableは1対1対応させる必要はない]のに、実際は1対1対応になっているEntityとtableの設計が密結合になる
Entity of type Entity is missing an assigned ID for field 'id'.The identifier generation strategy for this entity requires the ID field to be populated before EntityManager#persist() is called. If you want automatically generated identifier
[Symfony]、[Doctrine ORM]で起きるこんな感じのエラーerror`Entity of type Entity\Hoge is missing an assigned ID for field 'id'. The identifier generation strategy for this entity requires the ID field to be populated before EntityManager#persist() is called`
DoctrineのQueryBuilder
methodを使ってQueryを作成する`$qb`という変数に入れられることが多い方針としては、まず[DoctrineのQuery]や[DQL]で実現できないか考えるのが良いref [Doctrine ORM#60e2c2ad19827000007945be][docs https://www.doctrine-project.org/projects/doctrine-orm/en/2.9/reference/query-builder.html]
DoctrineのN+1問題の解決策
[Doctrine ORM]の[N+1問題]https://qiita.com/okazy/items/baf7382ef357a5886c36これはSQLのjoinのコストと、[ぐるぐるSQL]のコストを比較しているこれ、かなり最悪だな[mrsekut.icon]「`qb`の利用時に`getPref`するなら」、上のようにjoinを書いておくと速くなる
DQL
from [Doctrine ORM][DoctrineのQuery]をより柔軟にした感じのやつSQLっぽい構文で書くFROMのtableの指定とかは、table名ではなく、Entityを指定する、のように普通のSQLとは異なった書き方をするhttps://www.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html
Created
9 months ago
by
mrsekut
Updated
9 months ago
by
mrsekut
Views: 13
Page rank: 3
Copy link
Copy readable link
Start presentation
Hide dots
Doctrine: flush()
現在
Doctrine ORM
が管理している全てのEntityをDBに反映する
docs